import axios from 'axios'
import store from '@/store'
// 在真实项目中，同一个项目有可能有多个接口服务器，每个接口服务器配置项、token、数据处理完全不一样
// axios.create创建出来的一个新的独立的axios实例对象
import JSONBig from 'json-bigint'
const request = axios.create({
  baseURL: 'http://ttapi.research.itcast.cn/',
  // baseURL: 'http://api-toutiao-web.itheima.net/',
  // timeout: 500 // 设置超时时间,
  // transformResponse执行时机比响应拦截器更早
  // 响应拦截器中得到的数据其实是已经被axios内部处理完的数据
  // transformResponse覆盖了axios默认处理
  // 拦截器 --> 数据处理完了,二次加工 这块不能使用响应拦截器 因为来不及
  transformResponse: [function (data, headers) { // 这块的data是原始数据，字符串类型
    // console.log(typeof data)
    // console.log(data)
    // 默认axios内部是做了JSON.parse处理，我们可以通过这个方法覆盖
    return JSONBig.parse(data)// 这样会写会出问题 数字超出安全范围
  }]
})

// axios请求拦截器
request.interceptors.request.use(function (config) {
  if (store.state.user && store.state.user.token) {
    config.headers.Authorization = `Bearer ${store.state.user.token}`
  }
  return config// 请求头配置项
}, function (error) {
  console.log(error)
})

export default request

// transformRequest(axios已经把原始json字符串转换成了json对象)---> 请求拦截器(进一步处理) --> transformResponse --> 响应拦截器

// transformResponse
